// 手写Promise 分析
/* 1.Promise 是一个类 在执行类的时候 需要传递一个执行器进去 执行器会立即执行
*  2.Promise 中有三种状态 分别为 等待 pending  成功 fulfilled  和 失败 rejected 
* pending -> fulfilled
* pending -> rejected    状态一旦确定不可更改
*  3.resovle和reject 用来更改状态
resovle:fulfilled
reject:rejected
4.then 方法(原型对象上的方法)内部做的事情是判断状态 状态成功调用成功回调 状态失败调用失败回调
5.模拟异步 setTimeout 处理方法
6.then 多次调用 回调方法 定义为 []
7.then 方法的链式调用
8.判断链式调用的时候 x  的值属于什么类型
*/
const { values } = require('lodash')
const MyPromise = require('./MyPromise')
let promise = new MyPromise((resolve, reject) => {
    // setTimeout(() => {
    //         resolve('success')
    //     }, 2000)
    // throw new Error('执行器错误')
    //resolve('success')
    //reject('fail')
})

// function other() {
//     return new MyPromise((resolve, reject) => {
//         resovle('other')
//     })
// }
// promise.then(value => {
//     console.log(value)
//     return 100
// }).then(value => {
//     console.log(value)
// })
//MyPromise.resolve(100).then(value => console.log(value))

// let p = new Promise((resolve, reject) => {
//     reject('jhjjjjjjhj');
// });

// p.then(value => {
//     console.log(value, 'value');
// }).catch(reason => {
//     console.log(reason, 'reason');
// });